package Controlador;

import Modelo.Chofer;
import Modelo.Cooperativa;
import Modelo.Listas;
import Modelo.Socio;
import Vista.JFrameSocio;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;

public class ControladorSocio implements ActionListener, KeyListener {

    private JFrameSocio formSocio;
    private Listas listaS;

    public ControladorSocio(Listas lisS) {
        listaS = lisS;
        formSocio = new JFrameSocio();
        formSocio.agregarListener(this, this);
        formSocio.setVisible(true);
        cargarCoop();
        Enabled(false);
    }
//Falta terminarlo
    private void ExisteCarg()
    {
       Socio coop = new Socio();
       String cadena, cargo;
       cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
       cargo = formSocio.getCmbCargo().getSelectedItem().toString();
        for (int i = 0; i < listaS.getListaSocio().size(); i++) 
        {
            coop = listaS.getListaSocio().get(i);
            if (cargo.equals("Presidente") || cargo.equals("Vicepresidente") ||
                    cargo.equals("Tesorero") || cargo.equals("Secretaria"))
            {
                if(coop.getCodCoop().equals(cadena) && coop.getCargo().equals(cargo))
                {
                    Mensajes.Aviso("Ya el Cargo Seleccionado ya esta ocupado", "");
                    formSocio.getCmbCargo().requestFocusInWindow();
                    return;
                }
            }
        }
    }
    
    private void ExisteCargo()
    {
        String cadena;
        for (int i = 0; i < 10; i++) {
            
        }
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formSocio.getBtnSalirS())) {
            formSocio.dispose();
        }

        if (e.getSource().equals(formSocio.getBtnBuscarS())) {
            new ControladorConsulSocio(listaS);
        }
        if (e.getSource().equals(formSocio.getBtnGuardarS())) {
            Grabar();
        }
        if (e.getSource().equals(formSocio.getBtnCancelarS())) {
            Limpiar();
        }
        if (e.getSource().equals(formSocio.getCmbCooperativa())) {
            String cadena;
            cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
            if(cadena.equals("Seleccione"))
            {
                formSocio.getTxtNomCoop().setText("");
                formSocio.getCmbCargo().setSelectedItem("Seleccione");
            }
            comboRif();
        }
        if (e.getSource().equals(formSocio.getCmbCargo()))
        {
            ExisteCarg();
        }
    }

    @Override
    public void keyTyped(KeyEvent e) 
    {
        if(e.getSource().equals(formSocio.getTxtCedulaS()))
        {
            CedulaKeyTyped(e);
        }
        if(e.getSource().equals(formSocio.getTxtNombreS()))
        {
            NombresKeyTyped(e);
        }   
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getSource().equals(formSocio.getTxtCedulaS())) {
            CedulakeyPressed(e);
        }
        
        if (e.getSource().equals(formSocio.getTxtNombreS())) {
            NombreskeyPressed(e);
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }
    //------------------------------------------

    private void Enabled(boolean Status) {
        formSocio.getTxtCedulaS().setEnabled(!Status);
        formSocio.getTxtNombreS().setEnabled(Status);
        formSocio.getCmbCargo().setEnabled(Status);
        formSocio.getCmbCooperativa().setEnabled(Status);
    }
    //------------------------------------------------------------

    private void cargarCoop() {
        int fila, pos;
        String rif;
        String nom;
        for (fila = 0; fila < listaS.getListaCoop().size(); fila++) {
            rif = listaS.getListaCoop().get(fila).getRifC();
            formSocio.getCmbCooperativa().addItem(rif);
            if (listaS.getListaCoop().get(fila).getRifC().equals(rif)) {
                nom = listaS.getListaCoop().get(fila).getNombreC();
            }
        }
    }

    private void comboRif() {
        String cadena;
        int pos;
        cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
        for (pos = 0; pos < listaS.getListaCoop().size(); pos++) {
            if (listaS.getListaCoop().get(pos).getRifC().equals(cadena)) {
                formSocio.getTxtNomCoop().setText(listaS.getListaCoop().get(pos).getNombreC());
            }
        }
    }
    //------------------------------------------------------------

    private void Limpiar() {
        formSocio.getTxtCedulaS().setText("");
        formSocio.getTxtNombreS().setText("");
        formSocio.getCmbCargo().setSelectedItem("Seleccione");
        formSocio.getCmbCooperativa().setSelectedItem("Seleccione");
        formSocio.getTxtNomCoop().setText("");

    }
//---------------------------------------------------------------

    private void Grabar() {
        Socio socio = new Socio();
        String Cadena;

        Cadena = formSocio.getTxtCedulaS().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Cedula Vacia", "");
            formSocio.getTxtCedulaS().requestFocusInWindow();
            return;
        }

        Cadena = formSocio.getTxtNombreS().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Nombre Vacio", "");
            formSocio.getTxtNombreS().requestFocusInWindow();
            return;
        }
        
        Cadena = formSocio.getCmbCargo().getSelectedItem().toString();
        if (Cadena.equals("Seleccione")) {
            Mensajes.Aviso("Seleccione un Cargo", "");
            formSocio.getCmbCargo().requestFocusInWindow();
            return;
        }
        
        Cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
        if (Cadena.equals("Seleccione")) {
            Mensajes.Aviso("Seleccione una Cooperativa", "");
            formSocio.getCmbCooperativa().requestFocusInWindow();
            return;
        }
        socio.Socio(formSocio.getTxtCedulaS().getText(),
                formSocio.getTxtNombreS().getText(),
                formSocio.getCmbCargo().getSelectedItem().toString(),
                formSocio.getCmbCooperativa().getSelectedItem().toString());

        listaS.getListaSocio().add(socio);
        Mensajes.Aviso("Socio guardado con exito", "");
        Limpiar();
        Enabled(false);
        formSocio.getTxtCedulaS().requestFocusInWindow();
    }

    public int Existesocio(String Cedsocio) {
        int i = 0, Posi = -1;

        Socio socio;
        String CedLista;

        for (i = 0; i < listaS.getListaSocio().size(); i++) {
            socio = listaS.getListaSocio().get(i);

            CedLista = socio.getCedula();

            if (CedLista.equals(Cedsocio)) {
                Posi = i;
                return Posi;
            }

        }

        return Posi;
    }
//---------------------------------------------------------------
//----eventos keyPressed----
    private void CedulakeyPressed(KeyEvent e) {
        if (e.getSource().equals(formSocio.getTxtCedulaS())) {

            String Cadena;
            int Posisocio;
            Socio socio = new Socio();
            Cadena = formSocio.getTxtCedulaS().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) {
                Mensajes.Aviso("Cedula invalida", "");
                formSocio.getTxtCedulaS().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) {

                Posisocio = Existesocio(Cadena);
                if (Posisocio >= 0) {
                    socio = listaS.getListaSocio().get(Posisocio);
                    formSocio.getTxtNombreS().setText(socio.getNombre());
                    formSocio.getCmbCargo().setSelectedItem(socio.getCargo());
                    formSocio.getCmbCooperativa().setSelectedItem(socio.getCodCoop());

                    Mensajes.Aviso("Socio ya Existe", "");
                    Limpiar();

                } else {
                    Enabled(true);
                    formSocio.getTxtNombreS().requestFocusInWindow();

                }
            }

        }
    }
    
    private void NombreskeyPressed(KeyEvent e) {
        if (e.VK_ENTER == e.getKeyCode()) {
            formSocio.getCmbCooperativa().requestFocusInWindow();
        }
    }
//----fin de los eventos keyPressed----    
//-------------------------------------
//----Eventos keyTyped----    
    private void CedulaKeyTyped(KeyEvent evt) {
        String Cadena;
        char Caracter;

        Cadena = formSocio.getTxtCedulaS().getText();
        if (Cadena.length() == 8) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();

            if (Caracter == '.') {
                evt.consume();
            }

            if (Caracter < '0' || Caracter > '9') {
                evt.consume();
            }
        }

    }
    //-------------------------------------
    private void NombresKeyTyped(KeyEvent evt) 
    {
        String Cadena;
        String CarString;
        char Caracter;

        Cadena = formSocio.getTxtNombreS().getText();
        if (Cadena.length() == 20) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();

            CarString = Caracter + "";
            CarString = CarString.toUpperCase();
            Caracter = CarString.charAt(0);

            if (Caracter == ' ') {
                return;
            }

            if (Caracter < 'A' || Caracter > 'Z') {
                evt.consume();
            }

        }
    }
    //-------------------------------------
}